package com.egoo.ticket.server.dao;

import com.egoo.ticket.server.pojo.entity.WorkOrderTypeMenu;
import com.egoo.ticket.server.pojo.vo.TypeMenuAndFilterMenu;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * @author Administrator
 */

@Component
public interface WorkOrderTypeMenuDao {

	/**
	 * 根据工单类型菜单名称模糊查询分页
	 * @param menuName
	 * @param tenantId
	 * @return
	 */
	List<WorkOrderTypeMenu> selectByName(@Param("menuName") String menuName,
										 @Param("tenantId") String tenantId);

	/**
	 * 根据工单类型菜单Id查询工单类型菜单
	 * @param id
	 * @return
	 */
	WorkOrderTypeMenu selectById(@Param("id") Integer id,
								 @Param("tenantId") String tenantId);

	/**
	 * 更新工单类型菜单的使用状态
	 * @param workOrderTypeMenu
	 * @return
	 */
	Integer updateUseStatus(WorkOrderTypeMenu workOrderTypeMenu);

	/**
	 * 新建工单类型菜单
	 * @param workOrderTypeMenu
	 * @return
	 */
	Integer insertMenu(WorkOrderTypeMenu workOrderTypeMenu);

	/**
	 * 编辑工单类型菜单
	 * @param workOrderTypeMenu
	 * @return
	 */
	Integer updateContent(WorkOrderTypeMenu workOrderTypeMenu);

	/**
	 * 查询当前最大状态排序
	 * @return
	 */
	Integer selectOrderMax();

	/**
	 * 根据菜单名称获取工单类型菜单信息（不是模糊查询）
	 * @param menuName
	 * @param tenantId
	 * @return
	 */
	WorkOrderTypeMenu selectByEqualsName(@Param("menuName") String menuName,
                                         @Param("tenantId") String tenantId);

	/**
	 * 根据状态排序获取工单类型菜单信息
	 * @param ordering
	 * @return
	 */
	WorkOrderTypeMenu selectByOrdering(Integer ordering);

	/**
	 * 获取所有的工单类型菜单信息并进行分页
	 * @param currentPage
	 * @param pageSize
	 * @param tenantId
	 * @return
	 */
	List<WorkOrderTypeMenu> selectAll(@Param("currentPage") Integer currentPage,
                                      @Param("pageSize") Integer pageSize,
                                      @Param("tenantId") String tenantId);

	/**
	 * 获取总条数
	 * @param tenantId
	 * @return
	 */
	Integer selectTotal(@Param("tenantId") String tenantId);

	/**
	 * 获取工单类型菜单和过滤器菜单列表
	 * @param userId
	 * @param tenantId
	 * @return
	 */
	List<TypeMenuAndFilterMenu> selectTypeMenuAndFilterMenuList(@Param("userId") String userId,
																@Param("tenantId") String tenantId);

	/**
	 * 获取所有的工单类型菜单信息
	 * @return
	 */
	List<WorkOrderTypeMenu> selectAllMenu();

	/**
	 * 根据工单类型菜单状态获取工单类型菜单信息
	 * @param status
	 * @return
	 */
	List<WorkOrderTypeMenu> selectByStatus(@Param("status") Integer status);

	/**
	 * 更新工单类型信息
	 * @param workOrderTypeMenu
	 * @return
	 */
	Integer updateWorkOrderType(WorkOrderTypeMenu workOrderTypeMenu);

	/**
	 * 通过工单类型Id查询工单类型菜单
	 * @param workOrderTypeId
	 * @param tenantId
	 * @return
	 */
	WorkOrderTypeMenu selectByWorkOrderTypeId(@Param("workOrderTypeId") Long workOrderTypeId,
                                              @Param("tenantId") String tenantId);

	/**
	 * 通过工单类型Id删除工单类型菜单信息
	 * @param workOrderTypeId
	 * @return
	 */
	Integer deleteWorkOrderType(@Param("workOrderTypeId") Long workOrderTypeId);
	/**
	 * TODO 根据不同条件批量删除
	 * @author: victor_tang
	 * @createtime: 2020/5/20 14:57
	 * @param map 1
	 * @return: java.lang.Integer
	 */
	Integer deleteByCondition(Map<String, Object> map);

}
